﻿Imports System.Data
Imports System.Data.SqlClient
Partial Class Sistema_ModuloCrecimientoDesarrollo
    Inherits System.Web.UI.Page
    Dim editar As Boolean
    Dim Edad As Integer
    Dim mensaje As String
    Dim Exepcion As String
    Dim NumeroError As Integer
    Public iderespuesta As Integer
    Dim actualizar As Integer
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'SAMUEL -- SE COLOCAN LOS CONTROLES DE AUDICION DESHABILITADOS PORQUE NO SE VAN A UTILIZAR
        rbTamizajeAuditivo.Enabled = False
        RequiredFieldValidator21.Enabled = False
        rbAccedioSolucionAuditiva.Enabled = False
        rbSolucionAuditiva.Enabled = False


        If Page.IsPostBack = False Then
            If String.IsNullOrEmpty(Request.QueryString.Item("idPersona")) = False Then
                hdIdPersona.Value = Request.QueryString.Item("idPersona")
                hdIdvisita.Value = Request.QueryString.Item("Idvisita")
                hdIdhogar.Value = Request.QueryString.Item("Idhogar")
                EncabezadoModulo1.idPersona = Request.QueryString.Item("idPersona")
                EncabezadoModulo1.idVisita = Request.QueryString.Item("Idvisita")
            End If
            llenarCombos()
            traeredad()
            Using bd As New BdHogaresDataContext
                Dim a = From i In bd.Web_ModuloSaludCrecimientoDesarrollos
                          Where i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value
                          Select i.idPersona
                Try
                    traerDatos(hdIdvisita.Value)
                Catch

                    If Edad <= 16 Then

                        Dim c = (From i In bd.Web_ModuloSaludCrecimientoDesarrollos
                                 Where i.idPersona = hdIdPersona.Value
                                Select CType(i.idvisita, Integer?)).Max
                        guardar(True)
                        If IsNothing(c) = False Then
                            traerDatos(c)
                            lblinformacion.Text = "SE HA CARGADO LA INFORMACIÓN DE LA VISITA ANTERIOR A MODO DE VERIFICACIÓN, DEBE MODIFICAR LOS DATOS QUE HAN VARIADO Y HACER CLIC EN GUARDAR"
                        End If



                    End If
                End Try
            End Using
        End If

        Using bd As New BdHogaresDataContext
            Dim a = From i In bd.Web_ModuloSaludCrecimientoDesarrollos
                      Where i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value
                      Select i.idRespuesta
            If a.Count > 0 Then
                iderespuesta = a.First
            End If
        End Using

        listas()
    End Sub
    Sub traeredad()
        'Using bd As New BdHogaresDataContext
        '    Dim a = From i In bd.Web_Caracterizacionpersonas
        '              Where i.idPersona = hdIdPersona.Value
        '              Select i.edadañoscumplidos
        '    Edad = a.First()
        '    If Not Edad <= 10 Then

        '        Label1.Visible = True
        '        Button1.Visible = True
        '        PanelEdicion.Visible = False
        '    End If
        'End Using

        Dim fechanacimiento As Date
        Dim fechavisita As Date

        Try
            Using bd As New BdHogaresDataContext
                Dim a = From i In bd.Web_Caracterizacionpersonas
                          Where i.idPersona = hdIdPersona.Value
                          Select i.fechadenacimiento
                fechanacimiento = a.First()
            End Using

            Using db As New BdHogaresDataContext
                Dim a = From i In db.Web_Visitas
                        Where (i.idHogar = hdIdhogar.Value And i.Visita = "Levantamiento de información")
                        Select i
                fechavisita = a.FirstOrDefault.FechaDiligenciamiento.ToString
            End Using

        Catch ex As Exception

        End Try

        Dim anios As Integer = DateDiff(DateInterval.Year, fechanacimiento, fechavisita)
        If (fechavisita.Month < fechanacimiento.Month Or (fechavisita.Month = fechanacimiento.Month And fechavisita.Day < fechanacimiento.Day)) Then
            anios -= 1
        End If


        Edad = anios
        'If Edad > 10 Then
        If (Edad > 12 And Edad < 16) Or (Edad > 16) Then
            Label1.Visible = True
            Button1.Visible = True
            PanelEdicion.Visible = False
        Else
            If Edad >= 0 And Edad < 4 Then
                rbTamizajeVisual.Enabled = False
                RequiredFieldValidator18.Enabled = False
                rbSolucionOptica.Enabled = False
                rbAccedioSolucionOptica.Enabled = False
            End If
            If Edad > 4 And Edad < 11 Then
                rbTamizajeVisual.Enabled = False
                RequiredFieldValidator18.Enabled = False
                rbSolucionOptica.Enabled = False
                rbAccedioSolucionOptica.Enabled = False
            End If
            If Edad > 11 And Edad < 16 Then
                rbTamizajeVisual.Enabled = False
                RequiredFieldValidator18.Enabled = False
                rbSolucionOptica.Enabled = False
                rbAccedioSolucionOptica.Enabled = False
            End If

            If Edad > 10 Then
                rbConsultaCrecimiento.Enabled = False
                RequiredFieldValidator24.Enabled = False
                rbPrevencionOral.Enabled = False
                RequiredFieldValidator25.Enabled = False
                rbEsquemaVacunacion.Enabled = False
                RequiredFieldValidator194.Enabled = False
            End If

            If Edad > 12 Then
                rbDesnutricion.Enabled = False
                RequiredFieldValidator195.Enabled = False
            End If
        End If
    End Sub

    Sub llenarCombos()
        Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("CNNdb").ConnectionString)
            cnn.Open()
            LlenarItems(rbTamizajeVisual, "sino", cnn)
            LlenarItems(rbSolucionOptica, "sino", cnn)
            LlenarItems(rbAccedioSolucionOptica, "sino", cnn)
            LlenarItems(rbTamizajeAuditivo, "sino", cnn)
            LlenarItems(rbSolucionAuditiva, "sino", cnn)
            LlenarItems(rbAccedioSolucionAuditiva, "sino", cnn)
            LlenarItems(rbConsultaCrecimiento, "sino", cnn)
            LlenarItems(rbPrevencionOral, "sino", cnn)

            'SAMUEL -- SE LLENAN LOS NUEVOS COMBOS
            LlenarItems(rbEsquemaVacunacion, "sino", cnn)
            LlenarItems(rbDesnutricion, "sino", cnn)

            cnn.Close()
        End Using
    End Sub

    Sub LlenarItems(ByVal objeto As Object, ByVal pregunta As String, ByRef cnn As SqlConnection)
        If pregunta = "sino" Then : objeto.Items.Add(New ListItem("Sí", 1)) : objeto.Items.Add(New ListItem("No", 2)) : Exit Sub : End If
        Using drDatos As SqlDataReader = Funciones.TraerListas(pregunta, cnn)
            With objeto
                .DataSource = drDatos
                .DataTextField = "nombreopcion"
                .DataValueField = "valoropcion"
                .DataBind()
            End With
        End Using
    End Sub
   


#Region "cargar Datos"

    Sub traerDatos(idVisita As Integer) 'carga los controles con los datos de la bd
        Using bd As New BdHogaresDataContext
            Dim a = From i In bd.Web_ModuloSaludCrecimientoDesarrollos
                      Where i.idvisita = idVisita And i.idPersona = hdIdPersona.Value
                      Select i
            Dim Datos As New Web_ModuloSaludCrecimientoDesarrollo
            Datos = a.FirstOrDefault()
            rbTamizajeVisual.SelectedValue = IIf(IsDBNull(Datos.TamizajeVisual), 0, Datos.TamizajeVisual)
            rbSolucionOptica.SelectedValue = IIf(IsDBNull(Datos.SolucionOptica), 0, Datos.SolucionOptica)
            rbAccedioSolucionOptica.SelectedValue = IIf(IsDBNull(Datos.AccedioSolucionOptica), 0, Datos.AccedioSolucionOptica)
            rbTamizajeAuditivo.SelectedValue = IIf(IsDBNull(Datos.TamitajeAuditivo), 0, Datos.TamitajeAuditivo)
            rbSolucionAuditiva.SelectedValue = IIf(IsDBNull(Datos.SolucionAuditiva), 0, Datos.SolucionAuditiva)
            rbAccedioSolucionAuditiva.SelectedValue = IIf(IsDBNull(Datos.AccedioSolucionAuditiva), 0, Datos.AccedioSolucionAuditiva)
            rbConsultaCrecimiento.SelectedValue = IIf(IsDBNull(Datos.ConsultaCrecimiento), 0, Datos.ConsultaCrecimiento)
            rbPrevencionOral.SelectedValue = IIf(IsDBNull(Datos.PrevencionOral), 0, Datos.PrevencionOral)
            txtObsSaludSexual.Text = IIf(IsDBNull(Datos.Observaciones), "", Datos.Observaciones)

            'SAMUEL -- TRAER DATOS DE CONTROLES NUEVOS
            rbEsquemaVacunacion.SelectedValue = IIf(IsDBNull(Datos.EsquemaVacunacionAdecuado), 0, Datos.EsquemaVacunacionAdecuado)
            rbDesnutricion.SelectedValue = IIf(IsDBNull(Datos.SignoDesnutricion), 0, Datos.SignoDesnutricion)

        End Using

    End Sub
#End Region
#Region "Metodos"
    Sub guardar(ByVal primeravez As Boolean) 'Guarda los datos en la bd
        Dim Datos As New Web_ModuloSaludCrecimientoDesarrollo

        Datos.TamizajeVisual = IIf(rbTamizajeVisual.SelectedValue = Nothing, 0, rbTamizajeVisual.SelectedValue)
        Datos.SolucionOptica = IIf(rbSolucionOptica.SelectedValue = Nothing, 0, rbSolucionOptica.SelectedValue)
        Datos.AccedioSolucionOptica = IIf(rbAccedioSolucionOptica.SelectedValue = Nothing, 0, rbAccedioSolucionOptica.SelectedValue)
        Datos.TamitajeAuditivo = IIf(rbTamizajeAuditivo.SelectedValue = Nothing, 0, rbTamizajeAuditivo.SelectedValue)
        Datos.SolucionAuditiva = IIf(rbSolucionAuditiva.SelectedValue = Nothing, 0, rbSolucionAuditiva.SelectedValue)
        Datos.AccedioSolucionAuditiva = IIf(rbAccedioSolucionAuditiva.SelectedValue = Nothing, 0, rbAccedioSolucionAuditiva.SelectedValue)
        Datos.ConsultaCrecimiento = IIf(rbConsultaCrecimiento.SelectedValue = Nothing, 0, rbConsultaCrecimiento.SelectedValue)
        Datos.PrevencionOral = IIf(rbPrevencionOral.SelectedValue = Nothing, 0, rbPrevencionOral.SelectedValue)
        Datos.idPersona = Request.QueryString.Item("idPersona")
        Datos.idvisita = Request.QueryString.Item("idvisita")
        Datos.Observaciones = IIf(txtObsSaludSexual.Text = Nothing, "", txtObsSaludSexual.Text)

        'SAMUEL -- GUARDAR LOS DATOS DE LOS NUEVOS CONTROLES
        Datos.EsquemaVacunacionAdecuado = IIf(rbEsquemaVacunacion.SelectedValue = Nothing, 0, rbEsquemaVacunacion.SelectedValue)
        Datos.SignoDesnutricion = IIf(rbDesnutricion.SelectedValue = Nothing, 0, rbDesnutricion.SelectedValue)

        Try
            Using bd As New BdHogaresDataContext
                bd.Web_ModuloSaludCrecimientoDesarrollos.InsertOnSubmit(Datos)
                bd.SubmitChanges()
                bd.registrarLog(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath)
            End Using

        Catch ex As Exception
            mensaje = "ERROR"
            Exepcion = ex.Message
        Finally
            If Not IsNothing(mensaje) Then
                Using bd As New bdSeguridadDataContext 'calcula el numero de error que sera asignado al usuario
                    Dim a = (From i In bd.web_Errores Select i.idError).Max
                    NumeroError = a.ToString
                End Using

                Using bd As New BdHogaresDataContext
                    bd.registrarLogError(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath, Exepcion) 'Guarda en la tabla web_errores la exepción
                End Using
                If Not primeravez = True Then
                    contentmsg.InnerHtml = "<script>mostrarmensaje('Error en el registro de los datos','Ha ocurrido un error guardando los datos, por favor pongase en contacto con el administrador del sistema. <br>EL NÚMERO DE SU ERROR ES:" & NumeroError.ToString + 1 & "' ,'error');</script>"
                End If

            Else
                If Not primeravez = True Then
                    contentmsg.InnerHtml = "<script>mostrarmensaje('Registro de datos exitoso','Los datos fueron guardados correctamente<br> <br><br><input id=\'Button1\' type=\'button\' value=\'Regresar\' onclick=\'redireccionar(); />','success');</script>"
                End If
            End If
        End Try
    End Sub

    Sub actualizardatos(ByVal primeravez As Boolean)
        Using bda As New BdHogaresDataContext
            Dim Datos = (From i In bda.Web_ModuloSaludCrecimientoDesarrollos
            Where (i.idvisita = hdIdvisita.Value And i.idPersona = hdIdPersona.Value)
                      Select i).Single()


            Datos.TamizajeVisual = IIf(rbTamizajeVisual.SelectedIndex = "-1", 0, rbTamizajeVisual.SelectedIndex + 1)
            Datos.SolucionOptica = IIf(rbSolucionOptica.SelectedValue = "-1", 0, rbSolucionOptica.SelectedIndex + 1)
            Datos.AccedioSolucionOptica = IIf(rbAccedioSolucionOptica.SelectedValue = "-1", 0, rbAccedioSolucionOptica.SelectedIndex + 1)
            Datos.TamitajeAuditivo = IIf(rbTamizajeAuditivo.SelectedValue = "-1", 0, rbTamizajeAuditivo.SelectedIndex + 1)
            Datos.SolucionAuditiva = IIf(rbSolucionAuditiva.SelectedValue = "-1", 0, rbSolucionAuditiva.SelectedIndex + 1)
            Datos.AccedioSolucionAuditiva = IIf(rbAccedioSolucionAuditiva.SelectedValue = "-1", 0, rbAccedioSolucionAuditiva.SelectedIndex + 1)
            Datos.ConsultaCrecimiento = IIf(rbConsultaCrecimiento.SelectedValue = "-1", 0, rbConsultaCrecimiento.SelectedIndex + 1)
            Datos.PrevencionOral = IIf(rbPrevencionOral.SelectedValue = "-1", 0, rbPrevencionOral.SelectedIndex + 1)
            Datos.Observaciones = txtObsSaludSexual.Text
            Datos.FechaRegistro = Now()

            'SAMUEL -- ACTUALIZAR LOS DATOS DE LOS NUEVOS CONTROLES
            Datos.EsquemaVacunacionAdecuado = IIf(rbEsquemaVacunacion.SelectedIndex = "-1", 0, rbEsquemaVacunacion.SelectedIndex + 1)
            Datos.SignoDesnutricion = IIf(rbDesnutricion.SelectedIndex = "-1", 0, rbDesnutricion.SelectedIndex + 1)

            Try
                Using bd As New BdHogaresDataContext
                    bda.SubmitChanges()
                    bd.registrarLog(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath)
                End Using

            Catch ex As Exception
                mensaje = "ERROR"
                Exepcion = ex.Message
            Finally
                If Not IsNothing(mensaje) Then
                    Using bd As New bdSeguridadDataContext 'calcula el numero de error que sera asignado al usuario
                        Dim a = (From i In bd.web_Errores Select i.idError).Max
                        NumeroError = a.ToString
                    End Using

                    Using bd As New BdHogaresDataContext
                        bd.registrarLogError(Context.User.Identity.Name, 6, Request.CurrentExecutionFilePath, Exepcion) 'Guarda en la tabla web_errores la exepción
                    End Using
                    If Not primeravez = True Then
                        contentmsg.InnerHtml = "<script>mostrarmensaje('Error en el registro de los datos','Ha ocurrido un error guardando los datos, por favor pongase en contacto con el administrador del sistema. <br>EL NÚMERO DE SU ERROR ES:" & NumeroError.ToString + 1 & "' ,'error');</script>"
                    End If

                Else
                    If Not primeravez = True Then
                        Response.Write("<script>alert('Los datos se han guardado de manera exitosa');</script>")
                        Response.Write("<script>var pagina = 'PersonasConsulta.aspx?idPersona=" & hdIdPersona.Value & "&idhogar=" & hdIdhogar.Value & "';window.location = pagina;</script>")


                        'contentmsg.InnerHtml = "<script>mostrarmensaje('Registro de datos exitoso','Los datos fueron guardados correctamente<br> <br><br><input id=\'Button1\' type=\'button\' value=\'Regresar\' onclick=\'redireccionar(); />','success');</script>"
                    End If
                End If
            End Try


        End Using


    End Sub
#End Region
#Region "Enventos controles"

    Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Response.Redirect("PersonasConsulta.aspx?idPersona=" & hdIdPersona.Value & "&idhogar=" & hdIdhogar.Value)
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Response.Redirect("PersonasConsulta.aspx?idPersona=" & hdIdPersona.Value & "&idhogar=" & hdIdhogar.Value)
    End Sub
#End Region

    Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        If Page.IsValid = False Then
            Response.Write("<script>alert('Datos incompletos.')</script>")
            Exit Sub
        Else
            actualizardatos(False)
        End If
    End Sub

    Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate

        Dim mensaje As New StringBuilder

        If rbTamizajeVisual.SelectedValue = "1" And rbSolucionOptica.SelectedIndex = "-1" Then
            mensaje.AppendLine("</br>Si realizó tamizaje visual debe responder si necesitó solución óptica")
        End If

        If rbSolucionOptica.SelectedValue = "1" And rbAccedioSolucionOptica.SelectedIndex = "-1" Then
            mensaje.AppendLine("</br>Si necesitó solución óptica debe responder accedió solución óptica")
        End If


        If rbTamizajeAuditivo.SelectedValue = "1" And rbSolucionAuditiva.SelectedIndex = "-1" Then
            mensaje.AppendLine("</br>Si realizó tamizaje auditivo debe responder si necesitó solución auditiva")
        End If

        If rbSolucionAuditiva.SelectedValue = "1" And rbAccedioSolucionAuditiva.SelectedIndex = "-1" Then
            mensaje.AppendLine("</br>Si necesitó solución auditiva debe responder accedió solución auditiva")
        End If


        If mensaje.Length > 0 Then
            args.IsValid = False
            Me.CustomValidator1.ErrorMessage = mensaje.ToString()
            Me.CustomValidator1.Enabled = True
        End If

    End Sub

    Sub listas()
        Dim rbl As RadioButtonList
        rbl = CType(rbTamizajeVisual, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbTamizajeVisual()") : Next
        rbl = CType(rbTamizajeAuditivo, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbTamizajeAuditivo()") : Next

        rbl = CType(rbSolucionOptica, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbSolucionOptica()") : Next
        rbl = CType(rbSolucionAuditiva, RadioButtonList) : For Each li As ListItem In rbl.Items : li.Attributes.Add("onclick", "frbSolucionAuditiva()") : Next
        rbl.Dispose()
        rbl = Nothing

    End Sub
End Class
